// page/gesheng/index.js
const ac=wx.getBackgroundAudioManager() 
let lastIndex 
let config={ offset:0, songCount:1 } //配置文件
// let seek=false //仅用于测试，表示播放歌曲时是否已经跳转到最后的10秒钟位置
Page({
	onHide(){
		wx.setStorageSync('word', this.data.word)
	},
	onUnload(){
		this.onHide()
	},
	onReachBottom(e){
		this.request(this.data.word)
	},
	search(e){ 
		let word=e.detail.value 
		config.offset=0
		this.setData({songs:[]})
		this.request(word) 
	},
	request(word){ 
		if(!(word && config.offset<config.songCount))return
		wx.request({
			url: 'https://music.163.com/api/search/get/?s='+word+'&limit=20&type=1&offset='+config.offset,
			success: e => { 
				console.log('获取的数据：',e)
				let songCount=e.data.result.songCount 
				let a = e.data.result.songs
				config.offset+=a.length
				let change={songCount, word, inputValue:''}
				let size=(this.data.songs||[]).length
				for (let i = 0; i < a.length; ++i) {
					let s = a[i];
					change['songs['+(size+i)+']']={
						id: s.id, 
						name: s.name, 
						duration: s.duration, 
						album: s.album.name, 
						length: this.formatDuration(s.duration) //分:秒 格式的时长
					}
				}
				this.setData(change) //设置页面数据
			}
		})
	},
	pause(e){
		console.log('pause....')
		if(this.data.paused){
			ac.play()
		}else{
			ac.pause()
		}
		this.setData({paused: !this.data.paused})
	},
	doPlay(index){ //index-就是要播放歌曲的索引号
		// seek=false  //在播放其他歌曲时，seek初始化为尚未seek
		let songs=this.data.songs
		let song=songs[index] //点击的歌曲对象
		let change={} //记录有修改的值
		if(lastIndex!=undefined)change["songs["+lastIndex+"].selected"]=false //取消原来的选择状态
		change["songs["+index+"].selected"]=true //设置刚点击项目的选择状态
		lastIndex=index //重新设置最后点击的索引号
		// song.selected=true //不能直接修改数据，必须通过this.setData()来完成
		let id=song.id //歌曲的id
		let mp3='https://music.163.com/song/media/outer/url?id='+id+'.mp3'
		ac.src=mp3 //设置歌曲地址
		ac.title=song.name
		ac.epname=song.album
		//ac.startTime=180
		ac.play() //播放歌曲
		change['paused']=false 
		this.setData(change)
		let q=wx.createSelectorQuery() //获取查询选择器对象
		q.select('#s'+index).fields({size: true, rect:true})
			.selectViewport().fields({size: true, scrollOffset:true})
		.exec(r=>{
			let s=r[0], v=r[1], scrollTop=0
			console.log(s.top, s.bottom, v.height, v.scrollTop)
			if(s.top<0){ //歌曲部分或全部在屏幕上方不可见
				scrollTop=v.scrollTop+s.top
			}else if(s.bottom>v.height-10){ //歌曲部分或全部在屏幕下方不可见
				scrollTop=v.scrollTop+s.bottom-(v.height-10)
			}else{ //歌曲在屏幕内完全可见
				return
			}
			wx.pageScrollTo({scrollTop})//滚动屏幕保证当前播放歌曲在屏幕内完全可见
		})
	},
	play(e){//点击歌曲时进行播放
		let index=e.currentTarget.dataset.songIndex //点击歌曲的索引号
		this.doPlay(index)
	},
	formatDuration(ms){ //格式化时长为 分:秒 的格式
		let second=parseInt(ms/1000) //128秒  ===  2:08  2:18
		let minute=parseInt(second/60) //分
		second=second%60 //秒
		return minute+":"+(second<10?'0':'')+second
	},
	onLoad(options) {
		let next=e=>{
			let nextIndex=lastIndex+1
			if(nextIndex>= this.data.songs.length)nextIndex=0
			this.doPlay(nextIndex)
		}
		ac.onEnded(next) //歌曲播放完毕
		ac.onError(next) //歌曲播放出错
		// ac.onCanplay(e=>{
		// 	if(seek)return //仅仅用于测试，已经seek过了，就不再去seek
		// 	seek=true
		// 	setTimeout(()=>{
		// 		console.log('onCanplay', ac.duration)
		// 		ac.seek(ac.duration-10)
		// 	}, 500)
		// })
		let word=wx.getStorageSync('word') 
		console.log(888, word)
		this.request(word)
	},
	
})